package entidadesBD;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import entidadesVO.ArticuloComponentesVO;

@Table
@Entity(name = "articulos_componentes")
public class ArticuloComponentes implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Articulo articulo;
	private String nombre;
	private float composicion;
	private int codigoArticuloComponentes;
	
	public ArticuloComponentes(Articulo articulo, String nombre, float composicion, int codigoArticuloComponentes) {
		this.articulo = articulo;
		this.nombre = nombre;
		this.composicion = composicion;
		this.codigoArticuloComponentes = codigoArticuloComponentes;
	}
	/*
	 * Constructor Vacio
	 */
	public ArticuloComponentes(){
		
	}
	public ArticuloComponentes(String nombre, float composicion){
		this.nombre = nombre;
		this.composicion = composicion;
	}
	
	@ManyToOne
	public Articulo getArticulo() {
		return articulo;
	}
	public void setArticulo(Articulo articulo) {
		this.articulo = articulo;
	}
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public int getCodigoArticuloComponentes() {
		return codigoArticuloComponentes;
	}
	public void setCodigoArticuloComponentes(int codigoArticuloComponentes) {
		this.codigoArticuloComponentes = codigoArticuloComponentes;
	}
	
	@Column
	public float getComposicion() {
		return composicion;
	}
	public void setComposicion(float composicion) {
		this.composicion = composicion;
	}
	
	@Column
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	@Transient
	public ArticuloComponentesVO getArticuloComponentesVO(){
		ArticuloComponentesVO articuloComponentesVO = new ArticuloComponentesVO(nombre, composicion, codigoArticuloComponentes);
		return articuloComponentesVO;
	}
	
	/*
	 * En base a un centro de distribucion VO sin codigo genera un articulo 
	 */
	public void setArticuloComponentes(ArticuloComponentesVO articuloComponentesVO){
		this.nombre = articuloComponentesVO.getNombre();
		this.composicion = articuloComponentesVO.getComposicion();
	}
}
